Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2018, 01:26
Аспирант
Отправить личное сообщение для mortido Посмотреть профиль Найти все сообщения от mortido
 
Регистрация: 29.09.2014
Сообщений: 83

$this внутри ajax
Всем привет. Код выглядит таким образом:
$('.fa-play, .fa-pause, .fa-trash').click(function(){
		status = "";
		id = $(this).parents('.campaign').attr('id');
		if ($(this).hasClass('fa-play') || $(this).hasClass('fa-pause')) {
	if ($(this).hasClass('fa-play')) {
		status = "pause";
	}	else {
		status = "play";
	}
	$.ajax({
	type: "POST",
	url: "settings.php",
	data: {status:status, id:id},
	success: function(data) {
		if (data == 'play') {$(this).attr('class', 'fa fa-pause')}
		else {$(this).attr('class', 'fa fa-play');}
	}
	});
	}
});

Дело в том, что $(this) внутри функции аякса не работает. Что может быть не так? Могу сказать сразу, что перепробовал уже такие методы:
1) context:this
2)Занести $(this) в переменную
3) $.proxy
Ну и все что на первых страницах гугла. Видимо что-то не так с моим кодом, но что не могу понять. Ответ от якса приходит, я проверял алертом.
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2018, 01:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

console.log(this); посмотреть на что this ссылается не догадались?
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2018, 01:39
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от mortido
2)Занести $(this) в переменную
как это делали? и в каком месте кода?
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2018, 11:16
Аспирант
Отправить личное сообщение для mortido Посмотреть профиль Найти все сообщения от mortido
 
Регистрация: 29.09.2014
Сообщений: 83

Сообщение от j0hnik Посмотреть сообщение
console.log(this); посмотреть на что this ссылается не догадались?
как понять на что ссылается this? разве не на элемент, по которому идет клик?
в переменную так помещал: target = $(this);
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2018, 11:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

mortido,
кешируйте this
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2018, 11:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

Сообщение от mortido
target = $(this);
это надо делать сразу в 1 строке
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2018, 11:56
Аспирант
Отправить личное сообщение для mortido Посмотреть профиль Найти все сообщения от mortido
 
Регистрация: 29.09.2014
Сообщений: 83

Сообщение от рони Посмотреть сообщение
mortido,
кешируйте this
а что нужно дальше?
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2018, 12:32
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

mortido,
$('.fa-play, .fa-pause, .fa-trash').click(function(){
    var that = this;
    $.ajax({
      success: function(data) {
        console.log($(that));
      }
    });
    }
});

var обязательно.
Ответить с цитированием
  #9 (permalink)  
Старый 21.07.2018, 13:15
Аспирант
Отправить личное сообщение для mortido Посмотреть профиль Найти все сообщения от mortido
 
Регистрация: 29.09.2014
Сообщений: 83

Сообщение от Белый шум Посмотреть сообщение
mortido,
$('.fa-play, .fa-pause, .fa-trash').click(function(){
    var that = this;
    $.ajax({
      success: function(data) {
        console.log($(that));
      }
    });
    }
});

var обязательно.
вот что в логе:
w.fn.init [i.fa.fa-play]
0:i.fa.fa-play
length:1
__proto__:Object(0)
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2018, 13:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от mortido
вот что в логе
А что на него смотреть. Так понятно будет?

$('.fa-play, .fa-pause, .fa-trash').click(function(){
    var that = this;
    $(that).css('color', '#f00')
})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отмена отправки формы в обработчике внутри AJAX Lion_astana jQuery 2 04.06.2017 23:14
ajaxupload внутри ajax запроса Eliot456 AJAX и COMET 6 15.09.2016 23:45
Проблема с вызовом функции внутри Ajax Archiolidius jQuery 1 12.12.2012 19:40
Использование $(this) внутри функции Dorian_bs Общие вопросы Javascript 6 21.11.2011 11:10
JS внутри AJAX pagal AJAX и COMET 8 11.10.2011 11:19